<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>

    // 作用域 =>  代码执行的区域


    // 全局作用域  函数作用域(局部作用域)
    // 块级作用域 => ES6新增,带有成对 {}的代码执行区域  

    // 注意: 对象是数组,不是作用域

    // if(){

    // }else if(){

    // }else{

    // }

    // while(){

    // }

    // do{

    // }while();

    // for(){

    // }

    // {

    // }

    // !! 对象是数据 不是作用域
    // var zhang = {
    //     name:"张三",
    //     age:18,
    //     alert(1111)  // 对象的{}之间不能直接执行代码
    //     say:function(){
    //     }
    // }



    // 最纯净的块级作用域   
    // 注意: ES6 明确规定，如果区块中存在let和const命令，这个区块对这些命令声明的变量，从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量，就会报错。  => 暂时性死区
    debugger;
    {
        var a = 10;
        let b = 20;
        const c = 30;
    }
    console.log(a);
    console.log(b);
    



</script>
</html>